﻿Imports Microsoft.DirectX.Direct3D
Imports Microsoft.DirectX
Public Class ObjektMinimap
    Private Frames As Integer
    Public Property Frame() As Integer
        Get
            If Frames > 12 Then
                Return 1
            Else
                Return 0
            End If
        End Get
        Set(ByVal value As Integer)
            Frames += 1
            If Frames > 15 Then
                Frames = 0
            End If
        End Set
    End Property
    Public Shared Texturen() As Texture = {}
    Public Shared Beschreibung() As String = {}
    Public SpielerTextur(,) As Texture = {}
    Public Shared NeutraleTexturen() As Texture = {}
    Public Spielfeld As ObjektSpielfeld
    Public P As Point
    Dim Wirdgemalt1 As Boolean = True
    Public Property Wirdgemalt() As Boolean
        Get
            Return Wirdgemalt1
        End Get
        Set(ByVal value As Boolean)
            Wirdgemalt1 = value

        End Set
    End Property


    Public Sub New(ByVal neuSpielfeld As ObjektSpielfeld, ByVal Punkt As Point)
        If Not Hauptmenü.Formmodus = Hauptmenü.Formmodi.Kartenauswahl Then
            MusikEngine.LoadWav(My.Settings.Resourcenpfad + "Sound\Minimap.wav", False)
        End If
        Spielfeld = neuSpielfeld
        If Punkt = Nothing Then
            P = New Point(Hauptmenü.Rechteck.X + Hauptmenü.Rechteck.Width / 2 - Spielfeld.Breite * 2, Hauptmenü.Rechteck.Y + Hauptmenü.Rechteck.Height / 2 - Spielfeld.Höhe * 2)
        Else
            P = Punkt
        End If
        If Texturen.Length = 0 Then
            Array.Resize(Texturen, Objektverwalter.LandschaftenBilder.Length)
            Array.Resize(Beschreibung, Objektverwalter.LandschaftenBilder.Length)
            For I = 0 To Objektverwalter.LandschaftenBilder.Length - 1
                Texturen(I) = Grafikengine.LoadTexture(My.Settings.Resourcenpfad + "Minimap\" + Objektverwalter.LandschaftenBilder(I).ID + ".bmp")
                Beschreibung(I) = (Objektverwalter.LandschaftenBilder(I).ID)
            Next
        End If
        ReDim SpielerTextur(Spielfeld.Spieler.Length - 1, 4)
        For I = 0 To Spielfeld.Spieler.Length - 1
            Dim F As Bitmap = Hauptmenü.Farbtabelleerstellen(Spielfeld.Spieler(I).Farbe)
            SpielerTextur(I, 0) = Grafikengine.LoadTexture(Image.FromFile(My.Settings.Resourcenpfad + "Minimap\HQ.bmp"), F)
            SpielerTextur(I, 1) = Grafikengine.LoadTexture(Image.FromFile(My.Settings.Resourcenpfad + "Minimap\Gebäude.bmp"), F)
            SpielerTextur(I, 2) = Grafikengine.LoadTexture(Image.FromFile(My.Settings.Resourcenpfad + "Minimap\Minigeschütz.bmp"), F)
            SpielerTextur(I, 3) = Grafikengine.LoadTexture(Image.FromFile(My.Settings.Resourcenpfad + "Minimap\Laser.bmp"), F)
            SpielerTextur(I, 4) = Grafikengine.LoadTexture(Image.FromFile(My.Settings.Resourcenpfad + "Minimap\Einheit.png"), F)
        Next
        Array.Resize(NeutraleTexturen, 2)
        NeutraleTexturen(0) = Grafikengine.LoadTexture(Image.FromFile(My.Settings.Resourcenpfad + "Minimap\Raketensilo.bmp"))
        NeutraleTexturen(1) = Grafikengine.LoadTexture(Image.FromFile(My.Settings.Resourcenpfad + "Minimap\Unpasierbares.bmp"))
    End Sub
    Public Sub New(ByVal neuTextur() As Texture, ByVal neuBeschreibung() As String, ByVal neuSpielerTexturen(,) As Texture, ByVal NeuNeutraleTexturen() As Texture, ByVal neuSpielfeld As ObjektSpielfeld, ByVal Punkt As Point)
        Texturen = neuTextur
        Beschreibung = neuBeschreibung
        SpielerTextur = neuSpielerTexturen
        NeutraleTexturen = NeuNeutraleTexturen
        Spielfeld = neuSpielfeld
        P = Punkt
        ReDim SpielerTextur(Spielfeld.Spieler.Length - 1, 4)
        For I = 0 To Spielfeld.Spieler.Length - 1
            Dim F As Bitmap = Hauptmenü.Farbtabelleerstellen(Spielfeld.Spieler(I).Farbe)
            SpielerTextur(I, 0) = Grafikengine.LoadTexture(Image.FromFile(My.Settings.Resourcenpfad + "Minimap\HQ.bmp"), F)
            SpielerTextur(I, 1) = Grafikengine.LoadTexture(Image.FromFile(My.Settings.Resourcenpfad + "Minimap\Gebäude.bmp"), F)
            SpielerTextur(I, 2) = Grafikengine.LoadTexture(Image.FromFile(My.Settings.Resourcenpfad + "Minimap\Minigeschütz.bmp"), F)
            SpielerTextur(I, 3) = Grafikengine.LoadTexture(Image.FromFile(My.Settings.Resourcenpfad + "Minimap\Laser.bmp"), F)
            SpielerTextur(I, 4) = Grafikengine.LoadTexture(Image.FromFile(My.Settings.Resourcenpfad + "Minimap\Einheit.png"), F)
        Next
    End Sub
    Public Sub Malen()
        If Wirdgemalt = True Then
            Dim sngRotation As Double = 0
            Dim intColor As Color = Color.FromArgb(255, 255, 255, 255)
            With Grafikengine.recBild
                .X = 0 : .Width = 4
                .Y = 0 : .Height = 4
            End With
            Grafikengine.szfScale = Nothing
            Grafikengine.ptfRotCenter = Nothing
            For X = 0 To Spielfeld.Breite - 1
                For Y = 0 To Spielfeld.Höhe - 1
                    If IsNothing(Spielfeld.Landschaften(X, Y, ObjektSpielfeld.Bodenschlacht).Gebäude) Then
                        Grafikengine.ptfPosition = New Drawing.Point(P.X + 4 * X, P.Y + 4 * Y)
                        Dim ID As Integer = Array.IndexOf(Beschreibung, Spielfeld.Landschaften(X, Y, ObjektSpielfeld.Bodenschlacht).LandschaftsID)
                        Grafikengine.Sprite.Draw2D(Texturen(ID), Grafikengine.recBild, Grafikengine.szfScale, Grafikengine.ptfRotCenter, sngRotation, Grafikengine.ptfPosition, intColor)
                    Else
                        Grafikengine.ptfPosition = New Drawing.Point(P.X + 4 * X, P.Y + 4 * Y)
                        Dim G As ObjektGebäude = Spielfeld.Landschaften(X, Y, ObjektSpielfeld.Bodenschlacht).Gebäude
                        If G.Angriff = ObjektGebäude.Angriffe.HQ Then
                            Grafikengine.Sprite.Draw2D(SpielerTextur(G.Spieler, 0), Grafikengine.recBild, Grafikengine.szfScale, Grafikengine.ptfRotCenter, sngRotation, Grafikengine.ptfPosition, intColor)
                        ElseIf G.getFonds = True Then
                            Grafikengine.Sprite.Draw2D(SpielerTextur(G.Spieler, 1), Grafikengine.recBild, Grafikengine.szfScale, Grafikengine.ptfRotCenter, sngRotation, Grafikengine.ptfPosition, intColor)
                        ElseIf G.Angriff = ObjektGebäude.Angriffe.Sendeturm Then
                            Grafikengine.Sprite.Draw2D(SpielerTextur(G.Spieler, 1), Grafikengine.recBild, Grafikengine.szfScale, Grafikengine.ptfRotCenter, sngRotation, Grafikengine.ptfPosition, intColor)
                        ElseIf G.GebäudeID = "Minigeschütz+N" Then
                            Grafikengine.Sprite.Draw2D(SpielerTextur(G.Spieler, 2), Grafikengine.recBild, Grafikengine.szfScale, Grafikengine.ptfRotCenter, sngRotation, Grafikengine.ptfPosition, intColor)
                        ElseIf G.GebäudeID = "Minigeschütz+O" Then
                            Grafikengine.Sprite.Draw2D(SpielerTextur(G.Spieler, 2), Grafikengine.recBild, Grafikengine.szfScale, Grafikengine.ptfRotCenter, sngRotation, Grafikengine.ptfPosition, intColor)
                        ElseIf G.GebäudeID = "Minigeschütz+S" Then
                            Grafikengine.Sprite.Draw2D(SpielerTextur(G.Spieler, 2), Grafikengine.recBild, Grafikengine.szfScale, Grafikengine.ptfRotCenter, sngRotation, Grafikengine.ptfPosition, intColor)
                        ElseIf G.GebäudeID = "Minigeschütz+W" Then
                            Grafikengine.Sprite.Draw2D(SpielerTextur(G.Spieler, 2), Grafikengine.recBild, Grafikengine.szfScale, Grafikengine.ptfRotCenter, sngRotation, Grafikengine.ptfPosition, intColor)
                        ElseIf G.GebäudeID = "Laser" Then
                            Grafikengine.Sprite.Draw2D(SpielerTextur(G.Spieler, 3), Grafikengine.recBild, Grafikengine.szfScale, Grafikengine.ptfRotCenter, sngRotation, Grafikengine.ptfPosition, intColor)
                        ElseIf G.GebäudeID = "RAKETENSILO+RAKETE" Then
                            Grafikengine.Sprite.Draw2D(NeutraleTexturen(0), Grafikengine.recBild, Grafikengine.szfScale, Grafikengine.ptfRotCenter, sngRotation, Grafikengine.ptfPosition, intColor)
                        ElseIf G.GebäudeID = "RAKETENSILO" Then
                            Grafikengine.Sprite.Draw2D(NeutraleTexturen(0), Grafikengine.recBild, Grafikengine.szfScale, Grafikengine.ptfRotCenter, sngRotation, Grafikengine.ptfPosition, intColor)
                        Else
                            Grafikengine.Sprite.Draw2D(NeutraleTexturen(1), Grafikengine.recBild, Grafikengine.szfScale, Grafikengine.ptfRotCenter, sngRotation, Grafikengine.ptfPosition, intColor)
                        End If
                    End If
                    If Frame = 0 Then
                        If IsNothing(Spielfeld.Einheiten(X, Y, ObjektSpielfeld.Bodenschlacht)) = False Then
                            Dim E As Integer = Spielfeld.Einheiten(X, Y, ObjektSpielfeld.Bodenschlacht).Spieler
                            Grafikengine.ptfPosition = New Drawing.Point(P.X + 4 * X, P.Y + 4 * Y)
                            Grafikengine.Sprite.Draw2D(SpielerTextur(E, 4), Grafikengine.recBild, Grafikengine.szfScale, Grafikengine.ptfRotCenter, sngRotation, Grafikengine.ptfPosition, intColor)
                        End If
                    End If
                Next
            Next
            Frame = 1
        End If
    End Sub
End Class
